home *** CD-ROM | disk | FTP | other *** search
/ Almathera Ten Pack 3: CDPD 3 / Almathera Ten on Ten - Disc 3: CDPD3.iso / ab20 / ab20_archive / archivers / zoo210.lzh / zoo.man < prev   
Text File  |  1991-07-21  |  58KB  |  1,118 lines

  1.  
  2.  
  3.  
  4.      ZOO(1)                      (July 7, 1991)                    ZOO(1)
  5.  
  6.  
  7.  
  8.      NAME
  9.           zoo - manipulate archives of files in compressed form
  10.  
  11.      SYNOPSIS
  12.           zoo {acfDeghHlLPTuUvVx}[aAcCdEfghImMnNoOpPqSu1:/.@n+-=]
  13.           archive [file] ...
  14.           zoo -command archive [file] ...
  15.           zoo h
  16.  
  17.      DESCRIPTION
  18.           Zoo is used to create and maintain collections of files in
  19.           compressed form.  It uses a Lempel-Ziv compression algorithm
  20.           that gives space savings in the range of 20% to 80%
  21.           depending on the type of file data.  Zoo can store and
  22.           selectively extract multiple generations of the same file.
  23.           Data can be recovered from damaged archives by skipping the
  24.           damaged portion and locating undamaged data with the help of
  25.           fiz(1).
  26.  
  27.           This documentation is for version 2.1.  Changes from
  28.           previous versions are described in the section labelled
  29.           CHANGES.
  30.  
  31.           The command zoo h gives a summary of commands.  Extended
  32.           multiscreen help can be obtained with zoo H.
  33.  
  34.           Zoo will not add an archive to itself, nor add the archive's
  35.           backup (with .bak extension to the filename) to the archive.
  36.  
  37.           Zoo has two types of commands:  Expert commands, which
  38.           consist of one command letter followed by zero or more
  39.           modifier characters, and Novice commands, which consist of a
  40.           hyphen (`-') followed by a command word that may be
  41.           abbreviated. Expert commands are case-sensitive but Novice
  42.           commands are not.
  43.  
  44.           When zoo adds a file to an existing archive, the default
  45.           action is to maintain one generation of each file in an
  46.           archive and to mark any older generation as deleted. A
  47.           limit on the number of generations to save can be specified
  48.           by the user for an entire archive, or for each file
  49.           individually, or both.  Zoo deletes a stored copy of an
  50.           added file if necessary to prevent the number of stored
  51.           generations from exceeding the user-specified limit.
  52.  
  53.           Deleted files may be later undeleted.  Archives may be
  54.           packed to recover space occupied by deleted files.
  55.  
  56.           All commands assume that the archive name ends with the
  57.           characters .zoo unless a different extension is supplied.
  58.  
  59.           Novice commands
  60.  
  61.           Novice commands may be abbreviated to a hyphen followed by
  62.           at least one command character.  Each Novice command works
  63.           in two stages. First, the command does its intended work.
  64.           Then, if the result was that one or more files were deleted
  65.           in the specified archive, the archive is packed.  If packing
  66.           occurs, the original unpacked archive is always left behind
  67.           with an extension of .bak.
  68.  
  69.           No Novice command ever stores the directory prefix of a
  70.           file.
  71.  
  72.           The Novice commands are as follows.
  73.  
  74.           -add 
  75.                 Adds the specified files to the archive.
  76.  
  77.           -freshen
  78.                Adds a specified file to the archive if and only if an
  79.                older file by the same name already exists in the
  80.                archive.
  81.  
  82.           -delete
  83.                Deletes the specified files from the archive.
  84.  
  85.           -update
  86.                Adds a specified file to the archive either:  if an
  87.                older file by the same name already exists in the
  88.                archive or:  if a file by the same name does not
  89.                already exist in the archive.
  90.  
  91.           -extract
  92.                Extracts the specified files from the archive.  If no
  93.                file is specified all files are extracted.
  94.  
  95.           -move
  96.                Equivalent to -add except that source files are deleted
  97.                after addition.
  98.  
  99.           -print
  100.                Equivalent to -extract except that extracted data are
  101.                sent to standard output.
  102.  
  103.           -list
  104.                Gives information about the specified archived files
  105.                including any attached comments.  If no files are
  106.                specified all files are listed. Deleted files are not
  107.                listed.
  108.  
  109.           -test
  110.                Equivalent to -extract except that the extracted data
  111.                are not saved but any errors encountered are reported.
  112.  
  113.           -comment
  114.                Allows the user to add or update comments attached to
  115.                archived files. When prompted, the user may:  type a
  116.                carriage return to skip the file, leaving any current
  117.                comment unchanged;  or type a (possibly null) comment
  118.                of up to 32,767 characters terminated by /end (case-
  119.                insensitive) on a separate line;  or type the end-of-
  120.                file character (normally control D) to skip all
  121.                remaining files.
  122.  
  123.           -delete
  124.                Deletes the specified files.
  125.  
  126.           The correspondence between Novice and Expert commands is as follows.
  127.  
  128.           Novice                                                Equivalent
  129.           Command       Description                             Expert Command
  130.           
  131.           -add          add files to archive                    aP:
  132.           -extract      extract files from archive              x
  133.           -move         move files to archive                   aMP:
  134.           -test         test archive integrity                  xNd
  135.           -print        extract files to standard output        xp
  136.           -delete       delete files from archive               DP
  137.           -list         list archive contents                   VC
  138.           -update       add new or newer files                  aunP:
  139.           -freshen      add newer files                         auP:
  140.           -comment      add comments to files                   c
  141.  
  142.           Expert commands
  143.  
  144.           The general format of expert commands is:
  145.  
  146.           zoo {acfDeghHlLPTuUvVx}[aAcCdEfghImMnNoOpPqSu1:/.@n+-=]
  147.           archive [file] ...
  148.  
  149.           The characters enclosed within {} are commands.  Choose any
  150.           one of these.  The characters enclosed within [] just to the
  151.           right of the {} are modifiers and zero or more of these may
  152.           immediately follow the command character.  All combinations
  153.           of command and modifier characters may not be valid.
  154.  
  155.           Files are added to an archive with the command:
  156.  
  157.           zoo {au}[cfhIMnPqu:+-] archive [file] ...
  158.  
  159.           Command characters are:
  160.  
  161.           a    Add each specified file to archive.  Any already-
  162.                archived copy of the file is deleted if this is
  163.                necessary to avoid exceeding the user-specified limit
  164.                on the number of generations of the file to maintain in
  165.                the archive.
  166.  
  167.           u    Do an update of the archive.  A specified file is added
  168.                to the archive only if a copy of it is already in the
  169.                archive and the copy being added is newer than the copy
  170.                already in the archive.
  171.  
  172.           The following modifiers are specific to these commands.
  173.  
  174.           M    Move files to archive.  This makes zoo delete (unlink)
  175.                the original files after they have been added to the
  176.                archive.  Files are deleted after addition of all files
  177.                to the archive is complete and after any requested
  178.                packing of the archive has been done, and only if zoo
  179.                detected no errors.
  180.  
  181.           n    Add new files only.  A specified file is added only if
  182.                it isn't already in the archive.
  183.  
  184.           h    Use the high performance compression algorithm. This
  185.                option may be used with either the add (a) or filter
  186.                (f) commands to gain extra compression at the expense
  187.                of using somewhat more processor time. Extracting files
  188.                compressed with the method is usually slightly faster
  189.                than those saved with the default method.
  190.  
  191.           P    Pack archive after files have been added.
  192.  
  193.           u    Applied to the a command, this modifier makes it behave
  194.                identically to the u command.
  195.  
  196.                The combination of the n modifier with the u modifier
  197.                or u command causes addition of a file to the archive
  198.                either if the file is not already in the archive, or if
  199.                the file is already in the archive but the archived
  200.                copy is older than the copy being added.
  201.  
  202.           :    Do not store directory names.  In the absence of this
  203.                modifier zoo stores the full pathname of each archived
  204.                file.
  205.  
  206.           I    Read filenames to be archived from standard input. Zoo
  207.                will read its standard input and assume that each line
  208.                of text contains a filename.  Under AmigaDOS and the
  209.                **IX family, the entire line is used.  Under MS-DOS and
  210.                VAX/VMS, zoo assumes that the filename is terminated by
  211.                a blank, tab, or newline; thus it is permissible for
  212.                the line of text to contain more than one field
  213.                separated by white space, and only the first field will
  214.                be used.
  215.  
  216.                Under the **IX family of operating systems, zoo can be
  217.                used as follows in a pipeline:
  218.  
  219.                     find . -print | zoo aI sources
  220.  
  221.  
  222.  
  223.                If the I modifier is specified, no filenames may be
  224.                supplied on the command line itself.
  225.  
  226.           +,-  These modifiers take effect only if the a command
  227.                results in the creation of a new archive.  + causes any
  228.                newly-created archive to have generations enabled.  -
  229.                is provided for symmetry and causes any newly-created
  230.                archive to have generations disabled;  this is also the
  231.                default if neither + nor - is specified.
  232.  
  233.           Files are extracted from an archive with the command:
  234.  
  235.           zoo {ex}[dNoOpqS./@] archive [file] ...
  236.  
  237.           The e and x commands are synonymous. If no file was
  238.           specified, all files are extracted from the archive.
  239.  
  240.           The following modifiers are specific to the e and x
  241.           commands:
  242.  
  243.           N    Do not save extracted data but report any errors
  244.                encountered.
  245.  
  246.           O    Overwrite files.  Normally, if a file being extracted
  247.                would overwrite an already-existing file of the same
  248.                name, zoo asks you if you really want to overwrite it.
  249.                You may answer the question with `y', which means yes,
  250.                overwrite; or `n', which means no, don't overwrite; or
  251.                `a', which means assume the answer is `y' for this and
  252.                all subsequent files.  The O modifier makes zoo assume
  253.                that files may always be overwritten.  Neither
  254.                answering the question affirmatively nor using O alone
  255.                will cause read-only files to be overwritten.
  256.  
  257.                On **IX systems, however, doubling this modifier as O
  258.                will force zoo to unconditionally overwrite any read-
  259.                protected files with extracted files if it can do so.
  260.  
  261.                The O, N, and p modifiers are mutually exclusive.
  262.  
  263.           S    Supersede newer files on disk with older extracted
  264.                files.  Unless this modifier is used, zoo will not
  265.                overwrite a newer existing file with an older extracted
  266.                file.
  267.  
  268.           o    This is equivalent to the O modifier if and only if it
  269.                is given at least twice.  It is otherwise ignored.
  270.  
  271.           p    Pipe extracted data to standard output. Error messages
  272.                are piped to standard output as well.  However, if a
  273.                bad CRC is detected, an error message is sent both to
  274.                standard error and to standard output.
  275.  
  276.           /    Extract to original pathname.  Any needed directories
  277.                must already exist.  In the absence of this modifier
  278.                all files are extracted into the current directory.  If
  279.                this modifier is doubled as //, required directories
  280.                need not exist and are created if necessary.
  281.  
  282.           The management of multiple generations of archived files is
  283.           done with the commands:
  284.  
  285.           zoo gl[Aq]{+-=}number archive files ..
  286.           zoo gc[q]{+-=}number archive files ..
  287.           zoo gA[q]- archive
  288.           zoo gA[q]+ archive
  289.  
  290.           The first form, gl, adjusts the generation limit of selected
  291.           files by the specified value.  If the form =n is used, where
  292.           n is a decimal number, this sets the generation limit to the
  293.           specified value.  If + or - are used in placed of = the
  294.           effect is to increment or decrement the generation limit by
  295.           the specified value. For example, the command
  296.  
  297.                zoo gl=5 xyz :
  298.  
  299.  
  300.           sets the generation limit of each file in the archive
  301.           xyz.zoo to a value of 5.  The command
  302.  
  303.                zoo gl-3 xyz :
  304.  
  305.  
  306.           decrements the generation limit of each file in the archive
  307.           to 3 less than it currently is.
  308.  
  309.           If the A modifier is used, the archive-wide generation limit
  310.           is adjusted instead.
  311.  
  312.           The number of generations of a file maintained in an archive
  313.           is limited by the file generation limit, or the archive
  314.           generation limit, whichever is lower.  As a special case, a
  315.           generation limit of 0 stands for no limit.  Thus the default
  316.           file generation limit of 0 and archive generation limit of 3
  317.           limits the number of generations of each file in a newly-
  318.           created archive to three.
  319.  
  320.           The generation limit specified should be in the range 0
  321.           through 15;  any higher numbers are interpreted modulo 16.
  322.  
  323.           The second form of the command, using gc, adjusts the
  324.           generation count of selected files.  Each file has a
  325.           generation count of 1 when it is first added to an archive.
  326.           Each time a file by the same name is added again to an
  327.           archive, it receives a generation count that is one higher
  328.           than the highest generation count of the archived copy of
  329.           the file.  The permissible range of generation counts is 1
  330.           through 65535.  If repeated manipulations of an archive
  331.           result in files having very high generation counts, they may
  332.           be set back to lower numbers with the gc command.  The
  333.           syntax of the command is analogous to the syntax of the gl
  334.           command, except that the A modifier is not applicable to the
  335.           gc command.
  336.  
  337.           The third form, gA-, disables generations in an archive.
  338.           Generations are off when an archive is first created, but
  339.           may be enabled with the fourth form of the command, gA+.
  340.           When generations are disabled in an archive, zoo will not
  341.           display generation numbers in archive listings or maintain
  342.           multiple generations.  Generations can be re-enabled at any
  343.           time, though manipulation of an archive with repeated
  344.           interspersed gA- and gA+ commands may result in an archive
  345.           whose behavior is not easily understandable.
  346.  
  347.           Archived files are listed with the command:
  348.  
  349.           zoo {lLvV}[aAcCdfgmqvV@/1+-] archive[.zoo] [file] ...
  350.  
  351.           l    Information presented includes the date and time of
  352.                each file, its original and current (compressed) sizes,
  353.                and the percentage size decrease due to compression
  354.                (labelled CF or compression factor).  If a file was
  355.                added to the archive in a different timezone, the
  356.                difference between timezones is shown in hours as a
  357.                signed number.  As an example, if the difference is
  358.                listed as +3, this means that the file was added to the
  359.                archive in a timezone that is 3 hours west of the
  360.                current timezone.  The file time listed is, however,
  361.                always the original timestamp of the archived file, as
  362.                observed by the user who archived the file, expressed
  363.                as that user's local time.  (Timezone information is
  364.                stored and displayed only if the underlying operating
  365.                system knows about timezones.)
  366.  
  367.                If no filename is supplied all files are listed except
  368.                deleted files.
  369.  
  370.                Zoo selects which generation(s) of a file to list
  371.                according to the following algorithm.
  372.  
  373.                If no filename is supplied, only the latest generation
  374.                of each file is listed. If any filenames are
  375.                specified, and a generation is specified for an
  376.                argument, only the requested generation is listed.  If
  377.                a filename is specified ending with the generation
  378.                character (`:' or `;'), all generations of that file
  379.                are listed.  Thus a filename argument of the form zoo.c
  380.                will cause only the latest generation of zoo.c to be
  381.                listed; an argument of the form zoo.c:4 will cause
  382.                generation 4 of zoo.c to be listed;  and an argument of
  383.                the form zoo.c: or zoo.c:* will cause all generations
  384.                of zoo.c to be listed.
  385.  
  386.           L    This is similar to the l command except that all
  387.                supplied arguments must be archives and all non-deleted
  388.                generations of all files in each archive appear in the
  389.                listing.
  390.  
  391.                On **IX systems, on which the shell expands arguments,
  392.                if multiple archives are to be listed, the L command
  393.                must be used.  On other systems (VAX/VMS, AmigaDOS,
  394.                MSDOS) on which wildcard expansion is done internally
  395.                by zoo, wildcards may be used in the archive name, and
  396.                a multiple archive listing obtained, using the l
  397.                command.
  398.  
  399.           v    This causes any comment attached to the archive to be
  400.                listed in addition to the other information.
  401.  
  402.           V    This causes any comment attached to the archive and
  403.                also any comment attached to each file to be listed.
  404.  
  405.                Both the V and v command characters can also be used as
  406.                modifiers to the l and L commands.
  407.  
  408.           In addition to the general modifiers described later, the
  409.           following modifiers can be applied to the archive list
  410.           commands.
  411.  
  412.           a    This gives a single-line format containing both each
  413.                filename and the name of the archive, sorted by archive
  414.                name.  It is especially useful with the L command,
  415.                since the result can be further sorted on any field to
  416.                give a master listing of the entire contents of a set
  417.                of archives.
  418.  
  419.           A    This causes any comment attached to the archive to be
  420.                listed.
  421.  
  422.           g    This modifier causes file generation information to be
  423.                listed about the archive.  For each file listed, the
  424.                user-specified generation limit, if any, is listed.
  425.  
  426.                For example, `3g' for a file means that the user wants
  427.                no more than three generations of the file to be kept.
  428.                In archives created by older versions of zoo, the
  429.                listing will show `-g', meaning that no generation
  430.                information is kept and multiple generations of the
  431.                file are not being maintained.
  432.  
  433.                In addition to the generation information for each
  434.                file, the archive-wide generation limit, if any, is
  435.                shown at the end of the listing.  If generations have
  436.                been disabled by the user, this is so indicated, for
  437.                example:
  438.  
  439.                     Archive generation limit is 3 (generations off).
  440.  
  441.                For more information about generations see the
  442.                description of the g command.
  443.  
  444.           m    This modifier is currently applicable to **IX systems
  445.                only.  It causes the mode bits (file protection code)
  446.                of each file to be listed as a three-digit octal
  447.                number. Currently zoo preserves only the lowest nine
  448.                mode bits.  Their meanings are as described in the **IX
  449.                documentation for the chmod(1) command.
  450.  
  451.           C    This modifier causes the stored cyclic redundancy code
  452.                (CRC) for each archived file to be shown as a four-
  453.                digit hexadecimal number.
  454.  
  455.           1    This forces one filename to be listed per line. It is
  456.                most useful in combination with the f modifier.
  457.  
  458.           /    This forces any directory name to be always listed,
  459.                even in fast columnized listings that do not normally
  460.                include any directory names.
  461.  
  462.           +,-  The - modifier causes trailing generation numbers to be
  463.                omitted from filenames. The + modifier causes the
  464.                trailing generation numbers to be shown, which is also
  465.                the default if neither - nor + is specified.
  466.  
  467.           Files may be deleted and undeleted from an archive with the
  468.           following commands:
  469.  
  470.           zoo {DU}[Pq1] archive file ...
  471.  
  472.           The D command deletes the specified files and the U command
  473.           undeletes the specified files.  The 1 modifier (the digit
  474.           one, not the letter ell) forces deletion or undeletion of at
  475.           most one file.  If multiple instances of the same file exist
  476.           in an archive, use of the 1 modifier may allow selective
  477.           extraction of one of these.
  478.  
  479.           Comments may be added to an archive with the command:
  480.  
  481.           zoo c[A] archive
  482.  
  483.           Without the modifier A, this behaves identically to the
  484.           -comment command.  With the modifier A, the command serves
  485.           to add or update the comment attached to the archive as a
  486.           whole.  This comment may be listed with the lALAv, and V
  487.           commands.  Applying the cA command to an archive that was
  488.           created with an older version of zoo will result in an error
  489.           message requesting that the user first pack the archive with
  490.           the P command.  This reorganizes the archive and creates
  491.           space for the archive comment.
  492.  
  493.           The timestamp of an archive may be adjusted with the
  494.           command:
  495.  
  496.           zoo T[q] archive
  497.  
  498.           Zoo normally attempts to maintain the timestamp of an
  499.           archive to reflect the age of the newest file stored in it.
  500.           Should the timestamp ever be incorrect it can be fixed with
  501.           the T command.
  502.  
  503.           An archive may be packed with the command:
  504.  
  505.           zoo P[EPq] archive
  506.  
  507.           If the backup copy of the archive already exists, zoo will
  508.           refuse to pack the archive unless the P modifier is also
  509.           given.  The E modifier causes zoo not to save a backup copy
  510.           of the original archive after packing.  A unique temporary
  511.           file in the current directory is used to initially hold the
  512.           packed archive.  This file will be left behind if packing is
  513.           interrupted or if for some reason this file cannot be
  514.           renamed to the name of the original archive when packing is
  515.           complete.
  516.  
  517.           Packing removes any garbage data appended to an archive
  518.           because of Xmodem file transfer and also recovers any wasted
  519.           space remaining in an archive that has been frequently
  520.           updated or in which comments were replaced.  Packing also
  521.           updates the format of any archive that was created by an
  522.           older version of zoo so that newer features (e.g. archive-
  523.           wide generation limit, archive comment) become fully
  524.           available.
  525.  
  526.           Zoo can act as a pure compression or uncompression filter,
  527.           reading from standard input and writing to standard output.
  528.           This is achieved with the command:
  529.  
  530.           zoo f{cu}[h
  531.  
  532.           where c specifies compression, u specifies uncompression,
  533.           and h used in addition requests the high-performance
  534.           compression be used. A CRC value is used to check the
  535.           integrity of the data.  The compressed data stream has no
  536.           internal archive structure and contains multiple files only
  537.           if the input data stream was already structured, as might be
  538.           obtained, for example, from tar or cpio.
  539.  
  540.            Modem transfers can be speeded up with these commands:
  541.  
  542.                     zoo fc < file | sz ... rz | zoo fu > file
  543.  
  544.  
  545.  
  546.           General modifiers
  547.  
  548.           The following modifiers are applicable to several commands:
  549.  
  550.           c    Applied to the a and u commands, this causes the user
  551.                to be prompted for a comment for each file added to the
  552.                archive.  If the file being added has replaced, or is a
  553.                newer generation of, a file already in the archive, any
  554.                comment attached to that file is shown to the user and
  555.                becomes attached to the newly-added file unless the
  556.                user changes it.  Possible user responses are as
  557.                described for the -comment command.  Applied to the
  558.                archive list command l, the c modifier causes the
  559.                listing of any comments attached to archived files.
  560.  
  561.            .   In conjunction with / or // this modifier causes any
  562.                extracted pathname beginning with `/' to be interpreted
  563.                relative to the current directory, resulting in the
  564.                possible creation of a subtree rooted at the current
  565.                directory.  In conjunction with the command P the ....
  566.                modifier causes the packed archive to be created in the
  567.                current directory.  This is intended to allow users
  568.                with limited disk space but multiple disk drives to
  569.                pack large archives.
  570.  
  571.           d    Most commands that act on an archive act only on files
  572.                that are not deleted.  The d modifier makes commands
  573.                act on both normal and deleted files.  If doubled as
  574.                dd, this modifier forces selection only of deleted
  575.                files.
  576.  
  577.           f    Applied to the a and u commands, the f modifier causes
  578.                fast archiving by adding files without compression.
  579.                Applied to llll it causes a fast listing of files in a
  580.                multicolumn format.
  581.  
  582.           q    Be quiet.  Normally zoo lists the name of each file and
  583.                what action it is performing.  The q modifier
  584.                suppresses this.  When files are being extracted to
  585.                standard output, the q modifier suppresses the header
  586.                preceding each file.  When archive contents are being
  587.                listed, this modifier suppresses any header and
  588.                trailer.  When a fast columnized listing is being
  589.                obtained, this modifier causes all output to be
  590.                combined into a single set of filenames for all
  591.                archives being listed.
  592.  
  593.                When doubled as qq, this modifier suppresses WARNING
  594.                messages, and when tripled as qqq, ERROR messages are
  595.                suppressed too. FATAL error messages are never
  596.                suppressed.
  597.  
  598.           Recovering data from damaged archives
  599.  
  600.           The @ modifier allows the user to specify the exact position
  601.           in an archive where zoo should extract a file from, allowing
  602.           damaged portions of an archive to be skipped.  This modifier
  603.           must be immediately followed by a decimal integer without
  604.           intervening spaces, and possibly by a comma and another
  605.           decimal integer, giving a command of the form l@m or l@m,n
  606.           (to list archive contents) or x@m or x@m,n (to extract files
  607.           from an archive).  Listing or extraction begin at position m
  608.           in the archive.  The value of m must be the position within
  609.           the archive of an undamaged directory entry. This position
  610.           is usually obtained from fiz(1) version 2.0 or later.
  611.  
  612.           If damage to the archive has shortened or lengthened it, all
  613.           positions within the archive may be changed by some constant
  614.           amount.  To compensate for this, the value of nnnn may be
  615.           specified.  This value is also usually obtained from fiz(1).
  616.           It should be the position in the archive of the file data
  617.           corresponding to the directory entry that has been specified
  618.           with m.  Thus if the command x@456,575 is given, it will
  619.           cause the first 456 bytes of the archive to be skipped and
  620.           extraction to begin at offset 456;  in addition, zoo will
  621.           attempt to extract the file data from position 575 in the
  622.           archive instead of the value that is found in the directory
  623.           entry read from the archive. For example, here is some of
  624.           the output of fiz when it acts on a damaged zoo archive:
  625.  
  626.           ****************
  627.               2526: DIR         [changes] ==>         95
  628.               2587: DATA
  629.           ****************
  630.               3909: DIR         [copyrite] ==>        1478
  631.               3970: DATA
  632.               4769: DATA
  633.           ****************
  634.  
  635.           In such output, DIR indicates where fiz found a directory
  636.           entry in the archive, and DATA indicates where fiz found
  637.           file data in the archive.  Filenames located by fiz are
  638.           enclosed in square brackets, and the notation "==>   95"
  639.           indicates that the directory entry found by fiz at position
  640.           2526 has a file data pointer to position 95. (This is
  641.           clearly wrong, since file data always occur in an archive
  642.           after their directory entry.)  In actuality, fiz found file
  643.           data at positions 2587, 3970, and 4769.  Since fiz found
  644.           only two directory entries, and each directory entry
  645.           corresponds to one file, one of the file data positions is
  646.           an artifact.
  647.  
  648.           In this case, commands to try giving to zoo might be
  649.           x@2526,2587 (extract beginning at position 2526, and get
  650.           file data from position 2587), x@3090,3970 (extract at 3090,
  651.           get data from 3970) and x@3909,4769 (extract at 3909, get
  652.           data from 4769).  Once a correctly-matched directory
  653.           entry/file data pair is found, zoo will in most cases
  654.           synchronize with and correctly extract all files
  655.           subsequently found in the archive.  Trial and error should
  656.           allow all undamaged files to be extracted.  Also note that
  657.           self-extracting archives created using sez (the Self-
  658.           Extracting Zoo utility for MS-DOS), which are normally
  659.           executed on an MS-DOS system for extraction, can be
  660.           extracted on non-MSDOS systems using zoo's damaged-archive
  661.           recovery method using the @ modifier.
  662.  
  663.           Wildcard handling
  664.  
  665.           Under the **IX family of operating systems, the shell
  666.           normally expands wildcards to a list of matching files.
  667.           Wildcards that are meant to match files within an archive
  668.           must therefore be escaped or quoted. When selecting files
  669.           to be added to an archive, wildcard conventions are as
  670.           defined for the shell.  When selecting files from within an
  671.           archive, wildcard handling is done by zoo as described
  672.           below.
  673.  
  674.           Under MS-DOS and AmigaDOS, quoting of wildcards is not
  675.           needed.  All wildcard expansion of filenames is done by zoo,
  676.           and wildcards inside directory names are expanded only when
  677.           listing or extracting files but not when adding them.
  678.  
  679.           The wildcard syntax interpreted by zoo is limited to the
  680.           following characters.
  681.  
  682.           *    Matches any sequence of zero or more characters.
  683.  
  684.           ?    Matches any single character.
  685.  
  686.                Arbitrary combinations of * and ? are allowed.
  687.  
  688.           /    If a supplied pattern contains a slash anywhere in it,
  689.                then the slash separating any directory prefix from the
  690.                filename must be matched explicitly.  If a supplied
  691.                pattern contains no slashes, the match is selective
  692.                only on the filename.
  693.  
  694.           c-c  Two characters separated by a hyphen specify a
  695.                character range.  All filenames beginning with those
  696.                characters will match.  The character range is
  697.                meaningful only by itself or preceded by a directory
  698.                name.  It is not specially interpreted if it is part of
  699.                a filename.
  700.  
  701.           : and ;
  702.                These characters are used to separate a filename from a
  703.                generation number and are used when selecting specific
  704.                generations of archived files.  If no generation
  705.                character is used, the filename specified matches only
  706.                the latest generation of the file.  If the generation
  707.                character is specified, the filename and the generation
  708.                are matched independently by zoo's wildcard mechanism.
  709.                If no generation is specified following the : or ;
  710.                character, all generations of that file will match.  As
  711.                a special case, a generation number of 0 matches only
  712.                the latest generation of a file, while ^0 matches all
  713.                generations of a file except the latest one.  If no
  714.                filename is specified preceding the generation
  715.                character, all filenames will match.  As a corollary,
  716.                the generation character by itself matches all
  717.                generations of all files.
  718.  
  719.           MS-DOS users should note that zoo does not treat the dot as
  720.           a special character, and it does not ignore characters
  721.           following an asterisk.  Thus * matches all filenames; *.*
  722.           matches filenames containing a dot; *_* matches filenames
  723.           containing an underscore;  and *z matches all filenames that
  724.           end with the character z, whether or not they contain a dot.
  725.  
  726.           Usage hints
  727.  
  728.           The Novice command set in zoo is meant to provide an
  729.           interface with functionality and format that will be
  730.           familiar to users of other similar archive utilities.  In
  731.           keeping with this objective, the Novice commands do not
  732.           maintain or use any subdirectory information or allow the
  733.           use of zoo's ability to maintain multiple generations of
  734.           files.  For this reason, users should switch to exclusively
  735.           using the Expert commands as soon as possible.
  736.  
  737.           Although the Expert command set is quite large, it should be
  738.           noted that in almost every case, all legal modifiers for a
  739.           command are fully orthogonal.  This means that the user can
  740.           select any combination of modifiers, and when they act
  741.           together, they will have the intuitively obvious effect.
  742.           Thus the user need only memorize what each modifier does,
  743.           and then can combine them as needed without much further
  744.           thought.
  745.  
  746.           For example, consider the a command which is used to add
  747.           files to an archive. By itself, it simply adds the
  748.           specified files.  To cause only already-archived files to be
  749.           updated if their disk copies have been modified, it is only
  750.           necessary to add the u modifier, making the command au.  To
  751.           cause only new files (i.e., files not already in the
  752.           archive) to be added, the n modifier is used to create the
  753.           command anm.  To cause both already-archived files to be
  754.           updated and new files to be added, the u and n modifiers can
  755.           be used together, giving the command aun.  Since the order
  756.           of modifiers is not significant, the command could also be
  757.           anu.
  758.  
  759.           Further, the cccc modifier can be used to cause zoo to prompt
  760.           the user for a comment to attach to each file added. And
  761.           the f modifier can cause fast addition (addition without
  762.           compression).  It should be obvious then that the command
  763.           auncf will cause zoo to update already-archived files, add
  764.           new files, prompt the user for comments, and do the addition
  765.           of files without any compression.  Furthermore, if the user
  766.           wishes to move files to the archive, i.e., delete the disk
  767.           copy of each file after it is added to the archive, it is
  768.           only necessary to add the M modifier to the command, so it
  769.           becomes auncfM.  And if the user also wishes to cause the
  770.           archive to be packed as part of the command, thus recovering
  771.           space from any files that are replaced, the command can be
  772.           modified to auncfMP by adding the P modifier that causes
  773.           packing.
  774.  
  775.           Similarly, the archive listing commands can be built up by
  776.           combining modifiers. The basic command to list the contents
  777.           of an archive is l.  If the user wants a fast columnized
  778.           listing, the ffff modifier can be added to give the lf command.
  779.           Since this listing will have a header giving the archive
  780.           name and a trailer summarizing interesting information about
  781.           the archive, such as the number of deleted files, the user
  782.           may wish to "quieten" the listing by suppressing these;  the
  783.           relevant modifier is q, which when added to the command
  784.           gives lfq.  If the user wishes to see the **IX mode (file
  785.           protection) bits, and also information about multiple
  786.           generations, the modifiers m (show mode bits) and g (show
  787.           generation information) can be added, giving the command
  788.           lfqmg.  If the user also wishes to see an attached archive
  789.           comment, the modifier A (for archive) will serve.  Thus the
  790.           command lfqmgA will give a fast columnized listing of the
  791.           archive, suppressing any header and trailer, showing mode
  792.           bits and generation information, and showing any comment
  793.           attached to the archive as a whole.  If in addition
  794.           individual comments attached to files are also needed,
  795.           simply append the c modifier to the command, making it
  796.           lfqmgAc.  The above command will not show any deleted files,
  797.           however;  to see them, use the d modifier, making the
  798.           command lfqmgAcd (or double it as in lfqmgAcdd if only the
  799.           deleted files are to be listed).  And if the user also
  800.           wishes to see the CRC value for each file being listed, the
  801.           modifier C will do this, as in the command lfqmgAcdC, which
  802.           gives a fast columnized listing of all files, including
  803.           deleted files, showing any archive comment and file
  804.           comments, and file protection codes and generation
  805.           information, as well as the CRC value of each file.
  806.  
  807.           Note that the above command lfqmgAcdC could also be
  808.           abbreviated to VfqmgdC because the command V is shorthand
  809.           for lcA (archive listing with all comments shown).
  810.           Similarly the command v is shorthand for lA (archive listing
  811.           with archive comment shown). Both V and v can be used as
  812.           modifiers to any of the other archive listing commands.
  813.  
  814.           Generations
  815.  
  816.           By default, zoo assumes that only the latest generation of a
  817.           specified file is needed.  If generations other than the
  818.           latest one need to be selected, this may be done by
  819.           specifying them in the filename.  For example, the name
  820.           stdio.h would normally refer to the latest generation of the
  821.           file stdio.h stored in a zoo archive.  To get an archive
  822.           listing showing all generations of stdio.h in the archive,
  823.           the specification stdio.h:* could be used (enclosed in
  824.           single quotes if necessary to protect the wildcard character
  825.           * from the shell).  Also, stdio.h:0 selects only the latest
  826.           generation of stdio.h, while stdio.h:^0 selects all
  827.           generations except the latest one.  The : character here
  828.           separates the filename from the generation number, and the
  829.           character * is a wildcard that matches all possible
  830.           generations. For convenience, the generation itself may be
  831.           left out, so that the name stdio.h: (with the : but without
  832.           a generation number or a wildcard) matches all generations
  833.           exactly as stdio.h:* does.
  834.  
  835.           If a generation is specified but no filename is present, as
  836.           in :5:*, or just :, all filenames of the specified
  837.           generation will be selected. Thus :5 selects generation 5
  838.           of each file, and :* and : select all generations of all
  839.           files.
  840.  
  841.           It is important to note that zoo's idea of the latest
  842.           generation of a file is not based upon searching the entire
  843.           archive.  Instead, whenever zoo adds a file to an archive,
  844.           it is marked as being the latest generation. Thus, if the
  845.           latest generation of a file is deleted, then no generation
  846.           of that file is considered the latest any more.  This can be
  847.           surprising to the user.  For example, if an archive already
  848.           contains the file stdio.h:5 and a new copy is added,
  849.           appearing in the archive listing as stdio.h:6, and then
  850.           stdio.h:6 is deleted, the remaining copy stdio.h:5 will no
  851.           longer be considered to be the latest generation, and the
  852.           file stdio.h:5, even if undeleted, will no longer appear in
  853.           an archive listing unless generation 5 (or every generation)
  854.           is specifically requested.  This behavior will likely be
  855.           improved in future releases of zoo.
  856.  
  857.      FILES
  858.           xXXXXXX - temporary file used during packing
  859.           archive_name.bak - backup of archive
  860.  
  861.      SEE ALSO
  862.           compress(1), fiz(1)
  863.  
  864.      BUGS
  865.           When files are being added to an archive on a non-MS-DOS
  866.           system, it is possible for zoo to fail to detect a full disk
  867.           and hence create an invalid archive. This bug will be fixed
  868.           in a future release.
  869.  
  870.           Files with generation counts that wrap around from 65535 to
  871.           1 are not currently handled correctly.  If a file's
  872.           generation count reaches a value close to 65535, it should
  873.           be manually set back down to a low number.  This may be
  874.           easily done with a command such as gc-65000, which subtracts
  875.           65000 from the generation count of each specified file.
  876.           This problem will be fixed in a future release.
  877.  
  878.           Although zoo on **IX systems preserves the lowest nine mode
  879.           bits of regular files, it does not currently do the same for
  880.           directories.
  881.  
  882.           Currently zoo's handling of the characters : and ; in
  883.           filenames is not robust, because it interprets these to
  884.           separate a filename from a generation number.  A quoting
  885.           mechanism will eventually be implemented.
  886.  
  887.           Standard input cannot be archived nor can a created archive
  888.           be sent to standard output.  Spurious error messages may
  889.           appear if the filename of an archive is too long.
  890.  
  891.           Since zoo never archives any file with the same name as the
  892.           archive or its backup (regardless of any path prefixes),
  893.           care should be taken to make sure that a file to be archived
  894.           does not coincidentally have the same name as the archive it
  895.           is being added to.  It usually suffices to make sure that no
  896.           file being archived is itself a zoo archive. (Previous
  897.           versions of zoo sometimes tried to add an archive to itself.
  898.           This bug now seems to be fixed.)
  899.  
  900.           Only regular files are archived; devices and empty
  901.           directories are not. Support for archiving empty
  902.           directories and for preserving directory attributes is
  903.           planned for the near future.
  904.  
  905.           Early versions of MS-DOS have a bug that prevents "." from
  906.           referring to the root directory;  this leads to anomalous
  907.           results if the extraction of paths beginning with a dot is
  908.           attempted.
  909.  
  910.           VAX/VMS destroys case information unless arguments are
  911.           enclosed in double quotes.  For this reason if a command
  912.           given to zoo on a VAX/VMS system includes any uppercase
  913.           characters, it must be enclosed in double quotes.  Under
  914.           VAX/VMS, zoo does not currently restore file timestamps;
  915.           this will be fixed as soon as I figure out RMS extended
  916.           attribute blocks, or DEC supplies a utime() function,
  917.           whichever occurs first.  Other VMS bugs, related to file
  918.           structures, can often be overcome by using the program
  919.           bilf.c that is supplied with zoo.
  920.  
  921.           It is not currently possible to create a zoo archive
  922.           containing all zoo archives that do not contain themselves.
  923.  
  924.      DIAGNOSTICS
  925.           Error messages are intended to be self-explanatory and are
  926.           divided into three categories.  WARNINGS are intended to
  927.           inform the user of an unusual situation, such as a CRC error
  928.           during extraction, or -freshening of an archive containing a
  929.           file newer than one specified on the command line.  ERRORS
  930.           are fatal to one file, but execution continues with the next
  931.           file if any. FATAL errors cause execution to be aborted.
  932.           The occurrence of any of these causes an exit status of 1.
  933.           Normal termination without any errors gives an exit status
  934.           of 0.  (Under VAX/VMS, however, to avoid an annoying
  935.           message, zoo always exits with an error code of 1.)
  936.  
  937.      COMPATIBILITY
  938.           All versions of zoo on all systems are required to create
  939.           archives that can be extracted and listed with all versions
  940.           of zoo on all systems, regardless of filename and directory
  941.           syntax or archive structure; furthermore, any version of
  942.           zoo must be able to fully manipulate all archives created by
  943.           all lower-numbered versions of zoo on all systems.  So far
  944.           as I can tell, this upward compatibility (all manipulations)
  945.           and downward compatiblity (ability to extract and list) is
  946.           maintained by zoo versions up to 2.01.  Version 2.1 adds the
  947.           incompatibility that if high-performance compression is
  948.           used, earlier versions cannot extract files compressed with
  949.           version 2.1. This is the only incompatibility that is
  950.           permissible. You are forbidden, with the force of copyright
  951.           law, to create from the zoo source code any derivative work
  952.           that violates this compatibility goal, whether knowingly or
  953.           through negligence.  If any violation of this compatibility
  954.           goal is observed, this should be considered a serious
  955.           problem and reported to me.
  956.  
  957.      CHANGES
  958.           Here is a list of changes occurring from version 1.50 to
  959.           version 2.01.  In parentheses is given the version in which
  960.           each change occurred.
  961.  
  962.           -    (1.71) New modifiers to the list commands permit
  963.                optional suppression of header and trailer information,
  964.                inclusion of directory names in columnized listings,
  965.                and fast one-column listings.
  966.  
  967.           -    (1.71) Timezones are handled.
  968.  
  969.           -    (1.71) A bug was fixed that had made it impossible to
  970.                individually update comments for a file whose name did
  971.                not correspond to MS-DOS format.
  972.  
  973.           -    (1.71) A change was made that now permits use of the
  974.                shared library on the **IX PC.
  975.  
  976.           -    (1.71) VAX/VMS is now supported reasonably well.
  977.  
  978.           -    (2.00) A comment may now be attached to the archive
  979.                itself.
  980.  
  981.           -    (2.00) The OO option allows forced overwriting of
  982.                read-only files.
  983.  
  984.           -    (2.00) Zoo will no longer extract a file if a newer
  985.                copy already exists on disk;  the S option will
  986.                override this.
  987.  
  988.           -    (2.00) File attributes are preserved for **IX systems.
  989.  
  990.           -    (2.00) Multiple generations of the same file are
  991.                supported.
  992.  
  993.           -    (2.00) Zoo will now act as a compression or
  994.                decompression filter on a stream of data and will use a
  995.                CRC value to check the integrity of a data stream that
  996.                is uncompressed.
  997.  
  998.           -    (2.00) A bug was fixed that caused removal of a
  999.                directory link if files were moved to an archive by the
  1000.                superuser on a **IX system.
  1001.  
  1002.           -    (2.00) The data recovery modifier @ was greatly
  1003.                enhanced.  Self-extracting archives created for MS-DOS
  1004.                systems can now be extracted by zoo on any system with
  1005.                help from fiz(1).
  1006.  
  1007.           -    (2.01) A bug was fixed that had caused the first
  1008.                generation of a file to sometimes unexpectedly show up
  1009.                in archive listings.
  1010.  
  1011.           -    (2.01) A bug was fixed that had caused the MS-DOS
  1012.                version to silently skip files that could not be
  1013.                extracted because of insufficient disk space.
  1014.  
  1015.           -    (2.01) A bug was fixed that had sometimes made it
  1016.                impossible to selectively extract a file by specifying
  1017.                its name, even though all files could be extracted from
  1018.                the archive by not specifying any filenames.  This
  1019.                occurred when a file had been archived on a longer-
  1020.                filename system (e.g. AmigaDOS) and extraction was
  1021.                attempted on a shorter-filename system (e.g. MS-DOS).
  1022.  
  1023.           -    (2.01) A change was made that will make zoo preserve
  1024.                the mode (file protection) of a zoo archive when it is
  1025.                packed. This is effective only if zoo is compiled to
  1026.                preserve and restore file attributes.  Currently this
  1027.                is so only for **IX systems.
  1028.  
  1029.           -    (2.01) A bug was fixed that had caused an update of an
  1030.                archive to not always add all newer files.
  1031.  
  1032.           -    (2.01) Blanks around equal signs in commands given to
  1033.                "make" were removed from the mk* scripts for better
  1034.                compatiblity with more **IX implementations including
  1035.                Sun's.
  1036.  
  1037.           -    (2.1) Compression is now greatly improved if the "h"
  1038.                option is used.
  1039.  
  1040.           -    (2.1) The default behavior is to preserve full
  1041.                pathnames during extraction.
  1042.  
  1043.           -    (2.1) On some systems, extraction of files using the
  1044.                older (default) compression method is greatly speeded
  1045.                up.
  1046.  
  1047.           -    (2.1) Extended multiscreen help is available.
  1048.  
  1049.           -    (2.1) Memory allocation is improved, so that the MS-DOS
  1050.                version will not prematurely abort when updating a
  1051.                large archive.
  1052.  
  1053.           -    (2.1) The VAX/VMS version preserves file timestamps
  1054.                during extraction.
  1055.  
  1056.           -    (2.1) The default archive-wide generation limit, when
  1057.                generations are enabled, is 3.
  1058.  
  1059.      FUTURE DIRECTIONS
  1060.           A revised version of zoo is in the works that will be able
  1061.           to write newly-created archives to standard output and will
  1062.           support multivolume archives.  It will be upward and
  1063.           downward compatible with this version of zoo.
  1064.  
  1065.      ACKNOWLEDGEMENTS
  1066.           The zoo archiver was initially developed using Microsoft C
  1067.           3.0 on a PC clone manufactured by Toshiba of Japan and
  1068.           almost sold by Xerox.  Availability of the following systems
  1069.           was helpful in achieving portability:  Paul Homchick's
  1070.           Compaq running Microport System V/AT;  The Eskimo BBS
  1071.           somewhere in Oregon running Xenix/68000; Greg Laskin's
  1072.           system 'gryphon' which is an Intel 310 running Xenix/286;
  1073.           Ball State University's AT&T 3B2/300, UNIX PC, and VAX-
  1074.           11/785 (4.3BSD and VAX/VMS) systems. In addition J. Brian
  1075.           Waters provided feedback to help me make the code compilable
  1076.           on his Amiga using Manx/Aztec C.  The executable version 2.0
  1077.           for MS-DOS is currently compiled with Borland's Turbo C++
  1078.           1.0.
  1079.  
  1080.           Thanks are due to the following people and many others too
  1081.           numerous to mention.
  1082.  
  1083.           J. Brian Waters <jbwaters@bsu-cs.bsu.edu>, who has worked
  1084.           diligently to port zoo to AmigaDOS, created Amiga-specific
  1085.           code, and continues keeping it updated.
  1086.  
  1087.           Paul Homchick <rutgers!cgh!paul>, who provided numerous
  1088.           detailed reports about some nasty bugs.
  1089.  
  1090.           Bill Davidsen <davidsen@crdos1.crd.ge.com>, who provided
  1091.           numerous improvements to this manual, contributed
  1092.           multiscreen help, and provided many useful bug reports, bug
  1093.           fixes, code improvements, and suggestions.
  1094.  
  1095.           Mark Alexander <amdahl!drivax!alexande>, who provided me
  1096.           with some bug fixes.
  1097.  
  1098.           Haruhiko Okumura, who wrote the ar archiver and some
  1099.           excellent compression code, which I adapted for use in zoo.
  1100.  
  1101.           Randal L. Barnes <rlb@skyler.mavd.honeywell.com>, who (with
  1102.           Randy Magnuson) wrote the code to support the preservation
  1103.           of file timestamps under VAX/VMS.
  1104.  
  1105.           Raymond D. Gardner, who contributed replacement
  1106.           uncompression code that on some systems is twice as fast as
  1107.           the original.
  1108.  
  1109.           Greg Yachuk and Andre Van Dalen, who independently modified
  1110.           MS-DOS zoo to support multivolume archives.  (This support
  1111.           is not yet in this official release.)
  1112.  
  1113.           Mark Tomlinson <tomlinson@elec.canterbury.ac.nz>, who performed
  1114.           this port of v2.1 to AmigaDOS from the sources post to alt.sources
  1115.     
  1116.      AUTHHOR
  1117.           Rahul Dhesi
  1118.